#coding:utf8
import poplib
import cStringIO
import email
import email.Header
import base64,os

strpath = os.getcwd()
def accept():
    os.chdir(os.path.join(strpath,'static'))    #切到保存图片文件夹
    #POP3取信
    M=poplib.POP3('pop.qq.com')     #修改 接收人邮箱pop服务server
    M.user('xxx@qq.com')            #修改 接收人邮箱地址
    M.pass_('xxx')                  #修改 接收人邮箱密码
    #打印有多少封信
    numMessages = len(M.list()[1])
    print 'Num of messages', numMessages

    for i in range(numMessages):    
        m = M.retr(i+1)     #获取最新邮件
        
        buf = cStringIO.StringIO()
        for j in m[1]:        
            print >>buf, j
        buf.seek(0)
        #解析信件内容
        msg = email.message_from_file(buf)
        for part in msg.walk():
            contenttype =  part.get('Content-Disposition')
            filename=email.Header.decode_header(part.get_filename())
            if filename and contenttype and contenttype[0:10] == 'attachment':   #判断是否有附件
                filename=os.path.basename(filename[0][0])
                if filename == 'monitor.jpg':   #对于有附件的邮件，只下载含有此附件的
                    print contenttype[0:10],filename                
                    try:
                        f = open(filename,'wb') #注意一定要用wb来打开文件，因为附件一般都是二进制文件
                    except:
                        print '附件名有非法字符，自动换一个'
                        f = open('monitor', 'wb')
                    f.write(part.get_payload(decode=True))  #保存附件
                    f.close()
                    M.dele(i+1)     #下载完指定附件后仅删除此邮件
    M.quit()
    os.chdir(strpath)   #切回主目录
    print 'exit'

if __name__ == '__main__':
    accept()